/**
 * @desc 指令模板
 * @param el 当前组件的Dom对象
 * @param binding 当前指令的详细信息，只读 包含的属性如下：
            name：      指令名，不包括 v- 前缀。
            value：     指令的绑定值，例如：v-my-directive="1 + 1" 中，绑定值为 2。
            oldValue：  指令绑定的前一个值，仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
            expression：字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中，表达式为 "1 + 1"。
            arg：       传给指令的参数，可选。例如 v-my-directive:foo 中，参数为 "foo"。
            modifiers： 一个包含修饰符的对象。例如：v-my-directive.foo.bar 中，修饰符对象为 { foo: true, bar: true }
 */

export default {
    // 只调用一次，指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
    bind: function (el, binding) {

    },
    // 被绑定元素插入父节点时调用 (仅保证父节点存在，但不一定已被插入文档中)
    inserted: function (el, binding) {
        el.addEventListener('click', (e) => {
            if (!el.disabled) {
                el.style.pointerEvents = 'none'
                setTimeout(() => {
                    el.style.pointerEvents = 'auto'
                }, binding.value || 2000)
            } else {
                // disabled为true时，阻止默认的@click事件
                e.preventDefault()
                e.stopPropagation()
            }
        }, true)
    },
    // 所在组件的 VNode 更新时调用，但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变，也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新
    update(el, binding) {

    },
    // 指令所在组件的 VNode 及其子 VNode 全部更新后调用
    componentUpdated(el, binding) {

    },
    // 只调用一次，指令与元素解绑时调用
    unbind(el, binding) {

    }
}
